/*
 * Modell.java
 *
 * Created on 2007. m�rcius 25., 14:38
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package lemmings;

/**
 *
 * @author attila
 * A modell oszt�ly
 */
public class Modell {
    
    private User user;
    private HighScoreTable hst;
    private Levels lvls;
    private Level lvl;
    private Stage stage;
    
    private static int lemmingskilled, lemmingssaved;
    
    /** �j modellt hoz l�tre */
    public Modell(String uname) {
        System.out.println("> Modell konstruktor");
        
        int lvlnum;
        lemmingskilled=lemmingssaved=0;
        
        // Felhaszn�l� l�trehoz�sa
        user=new User(uname);
        // HST. l�trehoz�sa
        hst=new HighScoreTable();
        // megn�zz�k, hogy hol �llunk
        lvlnum=hst.getLastLevel(user.getNick());
        
        // Ha tudjuk az utols� p�ly�t, akkor t�lts�k be: 
        lvls=new Levels();
        lvl=lvls.getLevel(lvlnum);
        stage=lvl.getMap();
        System.out.println("game_started "+user.getNick());
    }
        /**
    * Eszk�zt rendel az adott koordin�t�n �ll� lemminghez, ha lehets�ges
    * @param x
    * X koordin�ta
    * @param y
    * Y koordin�ta
    * @param t
    * Az adand� eszk�z
    * @return
    * Boolean TRUE ha siker�lt a hozz�rendel�s, FALSE egy�bk�nt
    */
    public boolean addTool(int x, int y, Tool t) {
        Field f;
        ///TODO hol vonjuk le az eszkoz darabszamot?
        f=stage.whatIsOnCoord(x,y);
        
        if (f==null || !f.addTool(t)) {
            System.out.println("  < Nem volt semmi a mez�n");
            return false;
        }
        
        return true;
    }
    /**
    * A j�t�k egy id�egys�gnyi l�ptet�se
    */
    public String nextStep() {
        if (lvl.getJob()<=lemmingssaved) {
            System.out.println("game_end "+lemmingssaved);
        } else {
            return stage.tick();
        }
        return null;
    }
    /**
     * A megmentett lemmingek sz�m�nak n�vel�se
     * @param snum
     * �jonnan megmenek�lt  lemmingek sz�ma
     */
    public static void addToSaved(int snum) {
        lemmingssaved+=snum;
    }
    /**
     * A halott lemmingek sz�m�nak n�vel�se
     * @param snum
     * �jonnan legyilkolt  lemmingek sz�ma
     */     
    public static void addToKilled(int knum) {
        lemmingskilled+=knum;
    }
}
